#include "Sql_list.h"

// 初始化
void Init_Sql_list(Sql_list *L)
{
    // 安全判断
    null_estimate(L);

    memset(L, 0, MAX * sizeof(L->data[0]));
    L->len = 0;
}


// 末尾删除
void tail_del_list(Sql_list * L)
{
    // 安全判断
    null_estimate(L);

    if (L->len <= 0)
    {
        printf("顺序表为空");
    }
    L->len--;
}

// 任意位置删除
void pos_del_list(Sql_list *L, int index)
{
    // 安全判断
    null_estimate(L);

    printf("删除后:\n");
    size_t i;
    for ( i = index; i < L->len; i++)
    {
        L->data[i] = L->data[i+1];
    }
    L->len--;
}


// 末尾插入
void tail_insert_list(Sql_list *L, Elemnt_data data)
{
    // 安全判断
    null_estimate(L);

    // 判满
    if (L->len == MAX)
    {
        printf("顺序表已满");
        return;
    }
    L->data[L->len] = data;
    L->len++;
}

// 任意位置插入
void pos_insert_list(Sql_list *L, int index, Elemnt_data data)
{
    // 安全判断
    null_estimate(L);

    size_t i;
    printf("插入后:\n");
    for ( i = L->len; i-1 >= index; i--)
    {
        L->data[i] = L->data[i-1];
    }
    L->data[index] = data;
    L->len++;
}


// 通过序号查找
Elemnt_data *find_by_index(Sql_list *L, int index)
{
    // 安全判断
    null_estimate(L);

    for (size_t i = 0; i < L->len; i++)
    {
        if (index == i)
        {
            return &(L->data[i]);
        }
    }
}

// 通过名字查找
int find_by_name(Sql_list *L, char *name)
{
    // 安全判断
    null_estimate(L);

    for (size_t i = 0; i < L->len; i++)
    {
        if (!strcmp(L->data[i].name , name))
        {
            return i;
        }
    }
}


// 遍历
void printf_Sql_list(Sql_list *L)
{
    // 安全判断
    null_estimate(L);

    for (size_t i = 0; i < L->len; i++)
    {
        printf("名字:%s 性别:%s 年龄:%d 学号:%d 成绩:%d\n", L->data[i].name, L->data[i].sex,
               L->data[i].age, L->data[i].id, L->data[i].grade);
    }
}


// 判空
void IsEmoty_Sql_list(Sql_list *L)
{
    // 安全判断
    null_estimate(L);

    if (L->len == 0)
    {
        printf("顺序表为空");
    }
}


// 清空
void Clear_Sql_list(Sql_list *L)
{
    // 安全判断
    null_estimate(L);

    //清空
    L->len = 0;
}


//合并
Sql_list * Merge_Sql_lists(Sql_list * L1 , Sql_list * L2)
{

}


//扩容
Sql_list * Expand_Sql_list(Sql_list * L , int len)
{

}


// 安全判断
void null_estimate(Sql_list *L)
{
    if (L == NULL)
    {
        printf("顺序表为空\n");
    }
}